<style lang='scss' scoped>
  .list-enter-active {
    transition: all .45s;
  }
  .list-enter {
      opacity: 0;
  }
</style>
<!--  -->
<template lang='pug'>
  transition-group(:name="ani")
    span(v-for="(val, index) in title" :key="`title${index}`") {{val}}
</template>

<script>
  import {mapState, mapGetters, mapMutations} from 'vuex'

  export default {
    name: 'aniTitle',
    props: {
      str: String,
      ani: {
        type: String,
        default: 'fade'
      },
      interval: {
        type: Number,
        default: 150,
      }
    },
    //import引入的组件需要注入到对象中才能使用
    components: {},
    data() {
    //这里存放数据
      return {
        title: [],
      };
    },
    //监听属性 类似于data概念
    computed: {
      ...mapState([]),
      ...mapGetters([]),
    },
    //监控data中的数据变化
    watch: {
      str: {
        immediate:true,
        handler (newVal){
          this.startTitle(newVal)
        }
      }
    },
    //方法集合
    methods: {
      ...mapMutations([]),
      startTitle(title){
        if(title.length){
          title = title.split('');
          let word = title.shift();
          this.title.push(word);
          setTimeout(this.startTitle,this.interval,title.join(''));
        }
      }
    },
    //生命周期 - 创建完成（可以访问当前this实例）
    created() {
    
    },
    //生命周期 - 挂载完成（可以访问DOM元素）
    mounted() {
    },
    beforeCreate() {}, //生命周期 - 创建之前
    beforeMount() {}, //生命周期 - 挂载之前
    beforeUpdate() {}, //生命周期 - 更新之前
    updated() {}, //生命周期 - 更新之后
    beforeDestroy() {}, //生命周期 - 销毁之前
    destroyed() {}, //生命周期 - 销毁完成
    activated() {}, //如果页面有keep-alive缓存功能，这个函数会触发
  }
</script>